package controller;

import dao.ComentarioJpaController;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import dao.exceptions.NonexistentEntityException;
import java.util.Date;
import model.Comentario;
import pagecontroller.JsfUtil;
import pagecontroller.PageManager;

/**
 *
 * @author Edilson Fernandes da Costa
 * @version 1.0
 */
public class ComentarioController {

    public ComentarioController() {
        if (JsfUtil.getObjectFromSession("ComentarioJpaController") == null) {
            jpaController = new ComentarioJpaController();
        } else {
            jpaController = (ComentarioJpaController) JsfUtil.getObjectFromSession("ComentarioJpaController");
        }
    }
    private Comentario comentario = null;
    private Comentario comentarioAux = null;
    private ComentarioJpaController jpaController = null;
    private List<Comentario> comentarios = null;


   public String persiste() {
        if (comentario.getId() == null) {
            return create();
        } else {
            return update();
        }
    }

    public String update() {
        try {
            jpaController.edit(this.comentario);
            comentarioAux = comentario;
            this.comentario = null;
            JsfUtil.addSuccessMessage("Comentario Atualizado com Sucesso");
            getPageManager().setPageComentarioRelat();
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ComentarioController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ComentarioController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return "refreshPage";
    }

    public String create() {
        try {
            
            comentario.setDataCriacao(new Date());
            
            ObservacaoController observacaoController = (ObservacaoController) JsfUtil.getObjectFromSession("ObservacaoController");
            comentario.setObservacao(observacaoController.getObservacaoAux());
            
            jpaController.create(comentario);
            comentarioAux = comentario;
            comentario = null;
            JsfUtil.addSuccessMessage("Comentario cadastrado com sucesso.");
            getPageManager().setPageObservacaoRelat();
        } catch (Exception e) {
            JsfUtil.ensureAddErrorMessage(e, "Ocorreu um erro na percistencia dos dados.");
            return null;
        }
        return "refreshPage";
    }

    public String edit() {
        Comentario comentarioTemp = (Comentario) JsfUtil.getObjectFromRequestParameter("comentarioTemp");
        this.comentario = comentarioTemp;
        return "refreshPage";
    }

    public String load() {
        comentarioAux = (Comentario) JsfUtil.getObjectFromRequestParameter("comentarioTemp");
        getPageManager().setPageComentarioRelat();
        return "refreshPage";
    }


    public String destroy() {
        Comentario comentarioTemp = (Comentario) JsfUtil.getObjectFromRequestParameter("comentario");
        try {
            jpaController.destroy(comentarioTemp.getId());
            JsfUtil.addSuccessMessage("Comentario removido com sucesso.");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ComentarioController.class.getName()).log(Level.SEVERE, null, ex);
        }

        return "refreshPage";
    }


    public String editButton() {
        this.comentario = comentarioAux;
        getPageManager().setPageComentarioCad();

        return "refreshPage";
    }

    public String destroyButton() {
        Comentario comentarioTemp = comentarioAux;
        try {
            jpaController.destroy(comentarioTemp.getId());
            JsfUtil.addSuccessMessage("Comentario removida com sucesso.");
            comentarioAux = null;

        } catch (NonexistentEntityException ex) {
            Logger.getLogger(AlunoController.class.getName()).log(Level.SEVERE, null, ex);
        }

        return "refreshPage";
    }


    private PageManager getPageManager() {
        PageManager pageManager = (PageManager) JsfUtil.getObjectFromSession("PageManager");
        return pageManager;
    }



    public Comentario getComentario() {
        if (comentario == null) {
            comentario = new Comentario();
        }
        return comentario;
    }

    public List<Comentario> getComentarios(){
        this.comentarios = jpaController.findComentarioEntities();
        return this.comentarios;
    }

    public ComentarioJpaController getJpaController() {
        return jpaController;
    }

    public Comentario getComentarioAux() {
        return comentarioAux;
    }


}
